package com.g13.virtualpethospital.service;

import com.g13.virtualpethospital.common.EntityCommon;
import com.g13.virtualpethospital.controller.response.LoginResponse;
import com.g13.virtualpethospital.entity.UserEntity;
import com.g13.virtualpethospital.exceptions.UserException;

import java.util.List;

/**
 * @Title: UserService
 * @Author yyj1205
 * @Package com.g13.virtualpethospital.service
 * @Date 24/3/2024 17:21
 * @description: Service used for user
 */
public interface UserService {
    /**
     * 返回数据库中所有的用户，若没有用户则返回Null
     * @return
     */
    public List<UserEntity> findAllUser();

    /**
     * 返回某种身份的所有用户
     * @param roleType
     * @return
     */
    public List<UserEntity> findUserByType(EntityCommon.RoleType roleType);

    /**
     * 返回特定用户名的用户
     * @param username
     * @return
     */
    public List<UserEntity> findUserByUserName(String username);

    /**
     * 返回某个电话的所有用户，预计在未来加入根据电话登录的功能的预留接口
     * @param tel
     * @return
     */
    public List<UserEntity> findUserByTel(String tel);

    /**
     * 按id查找用户
     * @param Id
     * @return
     */
    public List<UserEntity> findUserById(String Id);

    /**
     * 更新一个用户
     * @param user
     * @param id
     */
    public void updateUser(UserEntity user, String id) throws UserException;

    /**
     * 删除一个用户
     * @param id
     */
    public void deleteUser(String id) throws UserException;

    /**
     * 登录，返回成功或者失败信息
     * @param username
     * @param pwd
     * @return
     */
    public LoginResponse login(String username, String pwd) throws UserException;

    /**
     * 用户注册，返回成功或者失败信息
     * @param user
     * @return
     */
    public LoginResponse register(UserEntity user);

}
